1 00:00:00,300 --> 00:00:00,930 Hey there. 2 00:00:00,930 --> 00:00:01,800 Welcome back. 3 00:00:01,800 --> 00:00:06,390 Now that we have everything we need set up on the client, we can get started scripting our story. 4 00:00:06,390 --> 00:00:11,250 You'll want to open up the game service and the game sections module scripts. 5 00:00:11,250 --> 00:00:15,390 And inside of the game service is where we're going to have to fill out the functionality for when our 6 00:00:15,390 --> 00:00:16,890 inside part gets touched. 7 00:00:16,890 --> 00:00:21,840 Before we do that, we need to create two booleans real quick, and these booleans are going to keep 8 00:00:21,840 --> 00:00:24,120 track of when our inside is touched. 9 00:00:24,120 --> 00:00:29,580 So this is going to act as a debounce to make sure that it only gets fired once, or the function gets 10 00:00:29,580 --> 00:00:30,630 executed once. 11 00:00:30,630 --> 00:00:36,360 And then we'll have another, uh, variable to tell us whether or not we're ready for section number 12 00:00:36,360 --> 00:00:36,900 two. 13 00:00:36,900 --> 00:00:42,690 So that way if the basement part gets touched, it's going to ignore it until we are ready to start 14 00:00:42,690 --> 00:00:44,400 the second section of our game. 15 00:00:44,700 --> 00:00:49,140 Now, what we want to do when the inside part is touched is we first want to confirm that a player's 16 00:00:49,140 --> 00:00:50,190 character touched it. 17 00:00:50,190 --> 00:00:56,340 So we'll get the other part that touched this inside part and if not other part. 18 00:00:56,370 --> 00:00:59,880 Dot parent find first child which is a humanoid. 19 00:01:00,880 --> 00:01:04,930 Then we're just going to return because a player's character did not touch this. 20 00:01:04,960 --> 00:01:09,850 We're also going to use the player service to see if we actually did get a player that touched it using 21 00:01:09,850 --> 00:01:10,990 the player's. 22 00:01:11,940 --> 00:01:14,820 Get player from character function and pass the other part. 23 00:01:14,850 --> 00:01:15,720 Dot parent. 24 00:01:16,790 --> 00:01:20,420 If there is no player, then we're going to return as well. 25 00:01:21,290 --> 00:01:24,950 And then the last thing we need to check is whether or not the inside was touched. 26 00:01:24,950 --> 00:01:26,660 So if inside touched. 27 00:01:27,250 --> 00:01:30,160 Is true, then we need to return. 28 00:01:30,160 --> 00:01:33,010 Otherwise we're going to set inside touch equal to true. 29 00:01:33,010 --> 00:01:38,860 And then this is where we use our sections module script and execute a function to do all of the functionality 30 00:01:38,860 --> 00:01:42,310 for the first section part of our story. 31 00:01:42,610 --> 00:01:47,920 So inside of game sections we can create a public function to start the first section. 32 00:01:47,920 --> 00:01:50,440 So it could be game sections. 33 00:01:50,440 --> 00:01:52,600 Start section one. 34 00:01:52,600 --> 00:01:56,410 And this is going to be the function for handling all that kind of good stuff in our story. 35 00:01:56,410 --> 00:01:59,230 And we can call that function from right here. 36 00:01:59,230 --> 00:02:06,580 And then after all that functionality is done in our start section one function, then we can set the 37 00:02:06,580 --> 00:02:09,490 ready for section two boolean equal to true. 38 00:02:09,520 --> 00:02:12,370 To let this function right here know that it's ready to start. 39 00:02:12,370 --> 00:02:14,140 You know the next part of our story. 40 00:02:14,820 --> 00:02:19,350 So inside of our game sections module script we're going to need four services. 41 00:02:19,350 --> 00:02:22,350 One is going to be the server script service. 42 00:02:25,230 --> 00:02:28,230 The next service we'll need is server storage. 43 00:02:31,760 --> 00:02:34,280 We're going to need replicated storage. 44 00:02:38,540 --> 00:02:41,840 And then we're also going to need the team service. 45 00:02:43,560 --> 00:02:47,220 From this point, we can start making references to a whole bunch of different events. 46 00:02:47,250 --> 00:02:54,180 One is going to be, for example, our door event which is in server storage, dot events, dot Bindable 47 00:02:54,180 --> 00:02:55,260 dot door. 48 00:02:55,530 --> 00:03:00,600 We want to make a reference to the game comms event for communicating with the client. 49 00:03:00,600 --> 00:03:05,430 So replicated storage, dot events, dot remotes, dot game communication. 50 00:03:05,430 --> 00:03:08,730 And that means we're going to have to get the game comms enum. 51 00:03:08,730 --> 00:03:10,230 And this one we're going to label. 52 00:03:10,230 --> 00:03:11,760 As for the client. 53 00:03:11,760 --> 00:03:18,720 And we can require for replicated storage dot modules dot enums dot game communication enum. 54 00:03:19,290 --> 00:03:25,110 And then we're also going to get the game comms event for the server or the Bindable event. 55 00:03:25,110 --> 00:03:27,450 So we could call this game comms a Bindable. 56 00:03:28,130 --> 00:03:33,560 Which is equal to server storage, dot events, dot bindable dot game comms. 57 00:03:33,890 --> 00:03:39,290 And then we're also going to get the game comms enum for our Bindable event. 58 00:03:39,290 --> 00:03:47,330 And we can require it from server script service dot server, dot modules, dot enums dot game communication 59 00:03:47,330 --> 00:03:47,930 enum. 60 00:03:47,930 --> 00:03:54,320 We'll also want to make a reference to our message guy event and replicated storage dot events dot remotes 61 00:03:54,320 --> 00:03:55,850 dot message guy. 62 00:03:57,320 --> 00:04:02,540 We'll want to make a reference to our update Guy event and replicated storage, dot events, dot remotes, 63 00:04:02,540 --> 00:04:09,320 dot update UI, and then we also want to get the GUI actions enum require it from replicated storage, 64 00:04:09,320 --> 00:04:12,650 dot modules, dot enums, dot gui actions enum. 65 00:04:12,650 --> 00:04:18,860 We're also going to want our manipulate camera event which is in replicated storage, dot events, dot 66 00:04:18,860 --> 00:04:20,300 remotes, dot manipulate camera. 67 00:04:20,300 --> 00:04:24,110 And we're also going to get the camera manipulation enum. 68 00:04:24,110 --> 00:04:31,100 And we can require that from replicated storage dot modules, dot enums, dot camera manipulation enum. 69 00:04:31,100 --> 00:04:35,870 I'm also going to make a reference to a folder in the workspace called Camera Parts. 70 00:04:35,870 --> 00:04:39,560 So workspace dot filtering folder dot camera parts. 71 00:04:39,560 --> 00:04:44,480 And this folder contains all of the invisible parts that we want to set our camera to. 72 00:04:44,510 --> 00:04:48,530 So for example here we want to set our camera to be facing towards Squidward. 73 00:04:48,530 --> 00:04:53,960 And then in the next section of our story, we'll have the players camera facing down the stairs. 74 00:04:53,960 --> 00:04:56,780 Here I'm also going to be creating a table. 75 00:04:56,780 --> 00:05:03,500 I'm going to call it images, and this is going to be a table to store all of the different, uh, IDs 76 00:05:03,500 --> 00:05:08,810 for images we need to set for when we have to give players a message to display. 77 00:05:08,810 --> 00:05:14,270 So remember that when we want to display that message UI on the player screen, we need the image of 78 00:05:14,270 --> 00:05:18,440 the person who is speaking the name and the message that they want to display. 79 00:05:18,440 --> 00:05:23,810 So for this one, we can have an image of our Squidward friend, and I'll just call this Squidward. 80 00:05:24,440 --> 00:05:30,830 And the ID for this image is going to be an RGB asset ID, colon slash slash. 81 00:05:30,830 --> 00:05:37,790 And the number for this is (870) 193-7876. 82 00:05:37,790 --> 00:05:40,250 So this is going to be our Squidward image. 83 00:05:40,760 --> 00:05:44,600 And then we also want to make a table for containing all the messages. 84 00:05:44,600 --> 00:05:49,250 So for the introductory messages we can call this Squidward one. 85 00:05:49,250 --> 00:05:53,660 So this will be the first set of messages, and it's going to be an array containing a whole bunch of 86 00:05:53,660 --> 00:05:54,800 different strings. 87 00:05:54,800 --> 00:05:59,510 So the first message could be telling the player once they enter the restaurant, we can tell them, 88 00:05:59,510 --> 00:06:01,760 well, you're late. 89 00:06:01,760 --> 00:06:03,830 Not surprising. 90 00:06:04,420 --> 00:06:06,460 And then we can give them a second message. 91 00:06:06,460 --> 00:06:13,480 We could say, you've got a lot of work to do before we open in the morning. 92 00:06:14,080 --> 00:06:17,050 So that alludes to them having to do some tasks. 93 00:06:17,050 --> 00:06:22,600 And then we could tell them that Mr. Krabs wants all the tables cleaned. 94 00:06:22,990 --> 00:06:30,730 We want the floors mopped, we need the toilets scrubbed, and we need the kitchen restocked. 95 00:06:31,000 --> 00:06:36,700 And then the last message we could give for this introduction scene is we could say, sadly, I have 96 00:06:36,700 --> 00:06:39,760 to sit here and supervise you. 97 00:06:39,760 --> 00:06:44,590 So hurry up and get your work done so we can leave. 98 00:06:44,620 --> 00:06:47,500 So this is just our good Squidward friend being lazy here. 99 00:06:47,500 --> 00:06:50,500 So this will be the first set of messages that we can give to the player. 100 00:06:51,070 --> 00:06:55,210 Last but not least, though, the last variable I am going to need is a random data type. 101 00:06:55,210 --> 00:06:57,400 So random dot new. 102 00:06:58,180 --> 00:07:03,130 Inside of our objective section here in the Game sections module script, we're also going to add a 103 00:07:03,130 --> 00:07:06,370 new objective which will label as tasks. 104 00:07:06,370 --> 00:07:11,410 And the text for this one can be something like complete your tasks. 105 00:07:11,410 --> 00:07:15,490 So that would be like cleaning the tables, cleaning the toilets, stuff like that. 106 00:07:15,490 --> 00:07:19,660 And we could also make a variable to keep track of whether or not this was fulfilled. 107 00:07:20,460 --> 00:07:23,190 And then some private functions we're going to need for now. 108 00:07:23,190 --> 00:07:27,930 One is going to be teleporting a player around a particular keyframe. 109 00:07:27,930 --> 00:07:33,030 So if you remember on the client, when the players got off the bus, we teleported them around a part. 110 00:07:33,030 --> 00:07:37,230 Well, now we want to create a dedicated function here on the server for doing the exact same thing. 111 00:07:37,230 --> 00:07:43,680 So this function will allow us to teleport a player, and we can call it around a keyframe. 112 00:07:43,680 --> 00:07:50,310 And we'll get past a player instance here, as well as the keyframe that we want to teleport the player 113 00:07:50,310 --> 00:07:50,910 around. 114 00:07:51,880 --> 00:08:00,340 We're also going to want to create a function for calculating the weight or yield duration for some 115 00:08:00,340 --> 00:08:01,210 text. 116 00:08:01,240 --> 00:08:03,070 What the heck is this going to do? 117 00:08:03,100 --> 00:08:09,520 Well, when we give the players the messages that they need to display on the screen, all that stuff 118 00:08:09,520 --> 00:08:12,100 is going to be happening on the client side, right? 119 00:08:12,130 --> 00:08:17,050 The server isn't going to know exactly how long to wait before starting the next section of the story, 120 00:08:17,050 --> 00:08:23,230 until after the players have that text or the message UI on their screen removed, so it can create 121 00:08:23,230 --> 00:08:24,700 a function here. 122 00:08:24,700 --> 00:08:26,590 Calculate. 123 00:08:27,840 --> 00:08:35,220 To basically take one of these tables, we'll get the table, and then we'll also pass the time in between 124 00:08:35,220 --> 00:08:39,780 these different messages, as well as the time in between displaying the different characters. 125 00:08:39,780 --> 00:08:45,120 And then we can have the server calculate how long to wait that matches how long it would take to display 126 00:08:45,120 --> 00:08:47,340 all of these messages on the player's screen. 127 00:08:47,340 --> 00:08:54,360 So this function would get passed a table containing all the messages, the time in between displaying 128 00:08:54,360 --> 00:08:59,280 the messages, and the time in between displaying each of the characters. 129 00:08:59,610 --> 00:09:04,680 And what we could do here is we could create a variable called wait duration, and that will be equal 130 00:09:04,680 --> 00:09:10,260 to the number of messages inside of our message table. 131 00:09:10,560 --> 00:09:12,480 Let me rename that to message table. 132 00:09:13,790 --> 00:09:19,340 And we just multiply that by the time in between the different messages. 133 00:09:19,340 --> 00:09:25,160 After that, we'll create a variable and we'll call it total characters equal to zero for now. 134 00:09:25,160 --> 00:09:30,470 And then what we need to do is we need to loop through every single message that is inside of the message 135 00:09:30,470 --> 00:09:31,250 table. 136 00:09:32,430 --> 00:09:40,410 And we need to set total characters plus equal to the length of this particular message here. 137 00:09:41,130 --> 00:09:46,290 Once we get the total amount of characters that need to be displayed on the screen, we can set the 138 00:09:46,290 --> 00:09:55,200 wait duration equal to itself, plus the total characters multiplied by the time that we need to wait 139 00:09:55,200 --> 00:09:57,330 in between different characters. 140 00:09:57,540 --> 00:10:00,270 And then after that, we can just return the wait duration. 141 00:10:00,270 --> 00:10:06,060 So this will give us a rough estimate of how long the server needs to wait after it tells the players 142 00:10:06,060 --> 00:10:09,960 to, you know, display this set of messages on their screens. 143 00:10:10,350 --> 00:10:13,110 We could also fill out this function real quick I guess as well. 144 00:10:13,110 --> 00:10:19,680 For this one, all we need to do is get the player dot character dot humanoid root part and set the 145 00:10:19,680 --> 00:10:22,800 key frame equal to the key frame that was passed to this function. 146 00:10:22,800 --> 00:10:30,510 And then we just add a vector three offset dot new and we can move it around the key frame anywhere 147 00:10:30,510 --> 00:10:33,600 -4 to 4 studs on the x axis. 148 00:10:33,600 --> 00:10:35,160 We'll do zero on the y axis. 149 00:10:35,160 --> 00:10:39,060 And then basically the same thing on the z axis okay. 150 00:10:39,060 --> 00:10:43,290 So when our start section one function gets called what we could do is we could put a Warn statement 151 00:10:43,290 --> 00:10:49,800 in here and print in the console that we are starting section one of the game. 152 00:10:50,370 --> 00:10:56,670 And remember, this function gets called when the player or one single player touches this inside part. 153 00:10:56,670 --> 00:11:01,770 So when a player touches this inside part, we want to teleport all the other players in the game inside 154 00:11:01,770 --> 00:11:02,520 of our lobby. 155 00:11:02,520 --> 00:11:05,310 And we also want to shut and lock the main door. 156 00:11:05,310 --> 00:11:15,480 So what we could do is we could first use our game comms event and fire to all of the clients using 157 00:11:15,480 --> 00:11:17,160 the action of game comms. 158 00:11:17,190 --> 00:11:21,390 Enum client two client dot change sound to inside. 159 00:11:21,390 --> 00:11:26,700 Because remember, not every single player will have the opportunity to touch this part, but since 160 00:11:26,700 --> 00:11:31,110 we're moving them all inside, we still want to have them muffle any outdoor sounds. 161 00:11:31,110 --> 00:11:33,240 So we'll make sure to tell them to do that. 162 00:11:33,240 --> 00:11:37,650 And then after that, we're going to loop through every single player that's in the alive team. 163 00:11:37,650 --> 00:11:41,400 So teams dot alive get players. 164 00:11:41,930 --> 00:11:48,710 And we need to teleport this player around the C frame that is inside of the workspace filtering folder. 165 00:11:48,710 --> 00:11:52,490 Dot teleport parts dot inside dot C frame. 166 00:11:52,490 --> 00:11:55,070 And that's going to be this part right here. 167 00:11:55,070 --> 00:11:57,980 This is our inside part that we want to teleport the players around. 168 00:11:58,310 --> 00:12:01,250 After we do that, we can go ahead and shut the main door. 169 00:12:01,250 --> 00:12:06,920 So we'll use the door event and fire and give the action that we want to close a door. 170 00:12:07,070 --> 00:12:13,730 And the door model that we need to close is going to be in the workspace dot Krusty Krab Dot doors, 171 00:12:13,730 --> 00:12:16,340 and that's going to be the main entrance door. 172 00:12:16,760 --> 00:12:22,190 And then after we close it, we also need to lock the door to prevent any players from opening it as 173 00:12:22,190 --> 00:12:25,190 well, so we can give the action of lock door. 174 00:12:25,430 --> 00:12:31,580 Once all the players are inside, we can set the game sections dot objectives, dot enter dot fulfilled 175 00:12:31,580 --> 00:12:37,280 equal to true and then we're going to use the update guy event and fire to all the clients in our game 176 00:12:37,280 --> 00:12:44,090 using the GUI actions enum dot objective fulfilled to tell them that they fulfilled the objective which 177 00:12:44,090 --> 00:12:46,310 was entering inside of the restaurant. 178 00:12:46,310 --> 00:12:51,230 So the fulfilled objective name is equal to enter. 179 00:12:51,620 --> 00:12:57,860 And then we also can use the manipulate cam, event and fire again to all of the clients in the game 180 00:12:57,860 --> 00:13:00,320 that we want to manipulate their camera. 181 00:13:00,710 --> 00:13:07,490 So two clients move camera two, and we want them to move their camera to this invisible part right 182 00:13:07,490 --> 00:13:09,860 here, which will be facing our Squidward friend. 183 00:13:10,160 --> 00:13:14,570 And if you remember what we need to pass, here is a table which will be our args table. 184 00:13:14,570 --> 00:13:20,750 And one key we need to have in here is to represent the tween data for tweening the camera. 185 00:13:20,750 --> 00:13:23,570 So we want the tween to last one second. 186 00:13:23,570 --> 00:13:28,670 And we could use an enum easing style of quad just to be a little fancy. 187 00:13:28,670 --> 00:13:31,940 And then we also need to pass the goal for the camera. 188 00:13:31,940 --> 00:13:35,630 So the camera goal is going to be equal to. 189 00:13:35,630 --> 00:13:39,140 We want to change the C frame of our camera. 190 00:13:39,500 --> 00:13:43,790 And the C frame needs to be equal to inside of our camera parts folder. 191 00:13:43,790 --> 00:13:49,310 We'll get the facing Squidward part, and we're going to pass that C frame. 192 00:13:49,670 --> 00:13:54,350 So now, because we have told all of the clients to do this specific action, all of their cameras are 193 00:13:54,350 --> 00:13:56,660 now going to be stuck facing Squidward. 194 00:13:57,170 --> 00:14:02,210 And now, since all their cameras are stuck facing Squidward, we can go ahead and start displaying 195 00:14:02,210 --> 00:14:03,620 messages on the screen. 196 00:14:03,740 --> 00:14:10,370 Before we do that, we need to calculate how long the server needs to wait for whatever set of messages 197 00:14:10,370 --> 00:14:11,150 we're passing. 198 00:14:11,150 --> 00:14:15,950 So we'll create a variable called wait duration, and we're going to use our calculate wait duration 199 00:14:15,950 --> 00:14:17,150 for text function. 200 00:14:17,150 --> 00:14:20,750 And we want to pass the messages dot Squidward won array. 201 00:14:20,750 --> 00:14:24,230 So we're going to be displaying all those messages for the time. 202 00:14:24,230 --> 00:14:26,570 In between messages we could do like three seconds. 203 00:14:26,570 --> 00:14:27,470 We want to wait. 204 00:14:27,470 --> 00:14:32,120 And then for the time in between different characters, we're going to do something like point. 205 00:14:32,940 --> 00:14:34,410 Uh oh two. 206 00:14:35,960 --> 00:14:41,390 And then we can use our message guy event and fire to all the clients in our game. 207 00:14:42,190 --> 00:14:46,600 That we need them to display some messages on the screen. 208 00:14:46,600 --> 00:14:50,560 So the person who is going to be speaking is Squidward. 209 00:14:50,560 --> 00:14:51,850 So this needs to be a string. 210 00:14:51,850 --> 00:14:52,990 We'll just call it Squidward. 211 00:14:54,160 --> 00:14:59,830 We need to pass the image that represents Squidward, which is inside of our images table dot Squidward. 212 00:14:59,830 --> 00:15:07,090 So we pass that ID and then we need to pass the message table, which will be equal to messages dot 213 00:15:07,390 --> 00:15:08,500 Squidward one. 214 00:15:09,240 --> 00:15:15,360 And then we also need to pass the delay between the different characters we need to display, which 215 00:15:15,360 --> 00:15:17,430 is going to be 0.02. 216 00:15:17,430 --> 00:15:22,560 And then the delay between messages is also going to be three seconds. 217 00:15:23,240 --> 00:15:26,600 And then if the camera is manipulated. 218 00:15:27,470 --> 00:15:34,190 For our message, we're going to set that equal to true as well, to let them all know that, hey, 219 00:15:34,190 --> 00:15:36,230 the camera was manipulated for this message. 220 00:15:36,230 --> 00:15:40,910 So once you're done displaying the messages on your screen, you want to move the camera back to the 221 00:15:40,910 --> 00:15:41,180 player. 222 00:15:41,180 --> 00:15:45,830 Because as you remember, the camera is currently stuck to the C frame of this part. 223 00:15:46,570 --> 00:15:50,890 And actually let me get rid of these extra, uh, characters there. 224 00:15:51,370 --> 00:15:55,900 Okay, so after we tell all the players to start displaying a message on the screen, the server needs 225 00:15:55,900 --> 00:15:57,370 to, of course, yield. 226 00:15:57,370 --> 00:16:01,960 So we're going to use the task dot wave function and use our wait duration. 227 00:16:02,140 --> 00:16:07,510 And since there might be a little bit of delay between when this information gets passed to all of our 228 00:16:07,510 --> 00:16:12,820 clients and stuff like that, I'm going to add an extra five seconds to our wait duration just in case. 229 00:16:12,820 --> 00:16:16,480 You know, it's never bad to be safe than sorry. 230 00:16:16,480 --> 00:16:23,680 And then after we wait those five seconds, we need to use our update guy event and fire to all of the 231 00:16:23,680 --> 00:16:29,560 clients and tell them that they have a new objective, which is to complete all of their tasks so we 232 00:16:29,560 --> 00:16:30,880 could do guy actions. 233 00:16:30,880 --> 00:16:32,830 Enum dot add objective. 234 00:16:32,950 --> 00:16:37,960 And remember, the key we need to pass here is we need a name for this objective, which is going to 235 00:16:37,960 --> 00:16:39,130 be tasks. 236 00:16:39,520 --> 00:16:43,330 And the text for this objective is going to be inside of our sections. 237 00:16:43,330 --> 00:16:48,640 So game sections dot objectives dot tasks, dot text. 238 00:16:48,640 --> 00:16:54,280 And then once we give them this new objective that they need to complete the tasks, we actually need 239 00:16:54,280 --> 00:17:00,760 to go ahead and, you know, set up all the tasks on the server such as mopping the floor, cleaning 240 00:17:00,760 --> 00:17:02,830 the tables, things like that. 241 00:17:02,920 --> 00:17:05,290 So that's what we're going to do in the next lecture. 242 00:17:05,290 --> 00:17:10,510 But before we leave, let's go ahead and test out the current code that we have inside of our start. 243 00:17:10,510 --> 00:17:11,680 Section one function. 244 00:17:12,220 --> 00:17:14,350 So up here we can go ahead and hit play. 245 00:17:14,350 --> 00:17:17,740 And let's see how our story is working out so far. 246 00:17:19,690 --> 00:17:24,970 So when I go to touch this invisible part that's right in front of us, we should get teleported inside. 247 00:17:24,970 --> 00:17:28,210 Our camera should get set to be looking at Squidward. 248 00:17:28,210 --> 00:17:35,080 This main door should close, and then we should get the message UI displaying the messages on our screen. 249 00:17:35,080 --> 00:17:36,730 So let's go ahead and see what happens. 250 00:17:38,050 --> 00:17:39,310 And there we go. 251 00:17:39,340 --> 00:17:44,680 Our camera moves to Squidward, and we're having the typewriting effect of our text appear on the screen. 252 00:17:44,680 --> 00:17:45,340 Here he is. 253 00:17:45,370 --> 00:17:46,480 And here's his name. 254 00:17:50,860 --> 00:17:51,550 And there we go. 255 00:17:51,550 --> 00:17:55,570 Our players camera gets set back to our, um, character. 256 00:17:55,570 --> 00:18:00,040 And now we get a new objective of we need to complete our tasks. 257 00:18:00,040 --> 00:18:05,080 So next up we're going to be scripting the, uh, module script responsible for setting up all of the 258 00:18:05,080 --> 00:18:06,130 tasks in our game. 259 00:18:06,280 --> 00:18:07,390 See you there.